package br.com.massai.model.dao;

import java.util.List;

import javax.inject.Inject;

import br.com.massai.model.entity.Funcionario;
import br.com.massai.model.entity.Obra;
import br.com.massai.model.jdbc.OracleJDBC;
import br.com.massai.model.repository.FuncionarioRepository;

public class FuncionarioDAO extends GenericDAO<Funcionario> implements FuncionarioRepository {

	private static final long serialVersionUID = 129705540772938600L;
	
	@Inject private OracleJDBC oracleJDBC;

	public FuncionarioDAO() {
		super(Funcionario.class);
	}
	
	@Override
	public List<Funcionario> obterFuncionarioNaoLancadoObra(List<String> lancados, Obra obra) throws Exception {
		return oracleJDBC.obterFuncionarioNaoLancadoObra(lancados, obra);
	}
	
	@Override
	public List<Funcionario> obterFuncionarioObra(Obra obra) throws Exception {
		return oracleJDBC.obterFuncionarioObra(obra);
	}

	@Override
	public List<Funcionario> obterFuncionarioAtivo() throws Exception {
		return oracleJDBC.obterFuncionariosAtivos();
	}
	
	@Override
	public List<Funcionario> obterFuncionarioObra(Long idObra) throws Exception {
		return oracleJDBC.obterFuncionariosObra(idObra);
	}
	
	@Override
	public List<Funcionario> obterFuncionarioDisponivelObra(Long idObra, List<Long> idFuncs) throws Exception {
		return oracleJDBC.obterFuncionariosObra(idObra, idFuncs);
	}
	
	@Override
	public Funcionario obterPorId(Long id) throws Exception {
		return oracleJDBC.obterFuncionariosPorCodigo(id);
	}
	
	@Override
	public Funcionario obterChapaColigada(String codigo) throws Exception {
		String chapa = codigo.substring(0, 6);
		Long coligada = Long.valueOf(codigo.substring(6, codigo.length()));

		return oracleJDBC.obterFuncionariosPorCodigo(chapa, coligada);
	}

	@Override
	public List<Funcionario> obterFuncionarioResponsavel() throws Exception {
		return oracleJDBC.obterFuncionarioResponsavel();
	}
}
